#pragma once
#include <string>
#include <vector>
#include "PDTNodeDefs.h"
using namespace std;

//#define LEFT 0
//#define RIGHT 1
//:% s/class \([^; {:]*\).*/\1_Em,

class PDTVar;
class PDTConst;
class PDTProp;

class PDTNode;
class PDTCodeGraph{
public:
	vector <PDTNode*> nodes; //vector containing the id's of the nodes
	vector <PDTVar*> variables;
	vector <PDTConst*> constants;
	vector <PDTProp*> properties;

	NodeId currentId;
	void updateCurrentId();

	PDTCodeGraph();
	void addNode(PDTNode * node);
	void addVar(PDTVar * var);
	void addConst(PDTConst * cons);
	void addProp(PDTProp * prop);
	NodeTypeEnum getType(){return PDTCodeGraph_Em;}
	void traverse(PDTNode * node);



};

